home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga News 95
/
Amiga News 95.iso
/
dpat
/
dpat64
/
screen2iff
/
screen2iff.s
< prev
next >
Wrap
Text File
|
1994-01-22
|
18KB
|
898 lines
opt AMIGA
;* $Revision Header built automatically *************** (do not edit) ************
;*
;* © Copyright by F.Delacroix
;*
;* File : DH0{42MB}:Progs/ScreenSaver/Screen2IFF.s
;* Created on : Samedi, 22-Jan-94 16:47:02
;* Created by : Frédéric DELACROIX
;* Current revision : V1.00
;*
;*
;* Purpose
;* -------
;* This commodity saves the front screen to disk (in IFF ILBM
;* format) when hotkey is pressed. Supports some WB & CLI
;* options. Written on Hisoft's Devpac 3.
;*
;* Revision V1.00
;* --------------
;* --- Initial release ---
;*
;*********************************************************************************
REVISION MACRO
dc.b "1.00"
ENDM
REVDATE MACRO
dc.b "22-Jan-94 "
ENDM
REVTIME MACRO
dc.b "16:47:02"
ENDM
AUTHOR MACRO
dc.b "Frédéric DELACROIX"
ENDM
VERNUM EQU 01
REVNUM EQU 00
include exec/execbase.i
include exec/alerts.i
include libraries/commodities.i
include libraries/commodities_lib.i
include dos/dostags.i
include workbench/icon_lib.i
include workbench/workbench.i
include libraries/iffparse.i
include libraries/iffparse_lib.i
include graphics/layers_lib.i
IE_SAVESCREEN EQU 1
;DEBUG SET 1
Start move.l 4.w,a6
move.l ThisTask(a6),a4
tst.l pr_CLI(a4)
bne.s FromCLI
lea pr_MsgPort(a4),a0
jsr _LVOWaitPort(a6)
lea pr_MsgPort(a4),a0
jsr _LVOGetMsg(a6)
move.l d0,WB.Startup
FromCLI lea Intuition.Name(pc),a1
jsr _LVOOldOpenLibrary(a6)
move.l d0,Intuition.Base
bne.s IntuitionOK
move.l #AT_Recovery!AG_OpenLib!AO_Intuition,d7
jsr _LVOAlert(a6)
bra exit
IntuitionOK
move.l d0,a1
cmp.w #37,LIB_VERSION(a1)
bge.s KickOK
move.l a1,a6
move.l #RECOVERY_ALERT,d0
lea BadKickstart.ALT,a0
move.l #BadKickstart.HGT,d1
jsr _LVODisplayAlert(a6)
bra.s CloseIntuition
KickOK lea DOS.Name(pc),a1
moveq #37,d0
jsr _LVOOpenLibrary(a6)
move.l d0,DOS.Base
bne.s DOSOK
move.l #AT_Recovery!AG_OpenLib!AO_DOSLib,d7
jsr _LVOAlert(a6)
bra.s CloseIntuition
DOSOK bsr.s ReadArgs
IFD DEBUG
jmp Resident
ENDC
lea Start-4(pc),a0
move.l (a0),Child.SegList
clr.l (a0)
move.l #NewProc.Tags,d1
move.l DOS.Base,a6
jsr _LVOCreateNewProc(a6)
tst.l d0
beq.s CloseDOS
bra.s exit
CloseDOS
bsr SmallCleanUp
move.l DOS.Base,a1
move.l 4.w,a6
jsr _LVOCloseLibrary(a6)
CloseIntuition
move.l Intuition.Base,a1
move.l 4.w,a6
jsr _LVOCloseLibrary(a6)
exit move.l WB.Startup(pc),d0
beq.s ExitToCLI
move.l 4.w,a6
jsr _LVOForbid(a6)
move.l d0,a1
jsr _LVOReplyMsg(a6)
ExitToCLI
moveq #0,d0
rts
ReadArgs
tst.l WB.Startup
bne.s .WBArgs
move.l #Args.Template,d1
move.l #Args.Array,d2
moveq #0,d3
move.l DOS.Base,a6
jsr _LVOReadArgs(a6)
move.l d0,Args.RDArgs
rts
.WBArgs lea Icon.Name,a1
moveq #37,d0
move.l 4.w,a6
jsr _LVOOpenLibrary(a6)
move.l d0,Icon.Base
beq.s .NoIconLib
move.l WB.Startup(pc),a2
tst.l sm_NumArgs(a2)
beq.s .NoIconLib
move.l sm_ArgList(a2),d0
beq.s .NoIconLib
move.l d0,a2
move.l wa_Lock(a2),d1
move.l DOS.Base,a6
jsr _LVOCurrentDir(a6)
move.l wa_Name(a2),a0
move.l Icon.Base,a6
jsr _LVOGetDiskObject(a6)
move.l d0,Program.DiskObject
beq.s .NoIconLib
move.l d0,a2
lea HotKey.TT(pc),a1
move.l do_ToolTypes(a2),a0
jsr _LVOFindToolType(a6)
move.l d0,SaveScreen.Descr
lea BaseName.TT(pc),a1
move.l do_ToolTypes(a2),a0
jsr _LVOFindToolType(a6)
move.l d0,BaseName
lea CXPri.TT(pc),a1
move.l do_ToolTypes(a2),a0
jsr _LVOFindToolType(a6)
move.l d0,d1
move.l #CXPri,d2
move.l DOS.Base,a6
jsr _LVOStrToLong(a6)
.NoIconLib
rts
SmallCleanUp
move.l Program.DiskObject,d0
beq.s .NoDiskOb
move.l Icon.Base,a6
move.l d0,a0
jsr _LVOFreeDiskObject(a6)
.NoDiskOb
move.l Args.RDArgs,d1
beq.s .NoRDArgs
move.l DOS.Base,a6
jsr _LVOFreeArgs(a6)
.NoRDArgs
move.l Icon.Base,d0
beq.s .NoIcon
move.l d0,a1
move.l 4.w,a6
jsr _LVOCloseLibrary(a6)
.NoIcon rts
WB.Startup dc.l 0
NewProc.Tags dc.l NP_Seglist
Child.SegList dc.l 0
dc.l NP_Name,Screen2IFF.Name
dc.l NP_Priority,2
dc.l NP_WindowPtr,0
dc.l TAG_DONE
DOS.Name dc.b 'dos.library',0
Intuition.Name dc.b 'intuition.library',0
Args.Template dc.b 'HOTKEY,BASENAME,CXPRI/N',0
HotKey.TT dc.b 'HOTKEY',0
BaseName.TT dc.b 'BASENAME',0
CXPri.TT dc.b 'CXPRI',0
section Resident,CODE
Resident
lea Graphics.Name(pc),a1
moveq #37,d0
move.l 4.w,a6
jsr _LVOOpenLibrary(a6)
move.l d0,Graphics.Base
bne.s GraphicsOK
move.l #AT_Recovery!AG_OpenLib!AO_GraphicsLib,d7
jsr _LVOAlert(a6)
bra CloseDOSResident
GraphicsOK
lea Layers.Name(pc),a1
moveq #37,d0
jsr _LVOOpenLibrary(a6)
move.l d0,Layers.Base
bne.s LayersOK
move.l #AT_Recovery!AG_OpenLib!AO_LayersLib,d7
jsr _LVOAlert(a6)
bra CloseGraphics
LayersOK
lea Commodities.Name(pc),a1
moveq #37,d0
jsr _LVOOpenLibrary(a6)
move.l d0,Commodities.Base
bne.s CommoditiesOK
lea NoCommodities.MSG(pc),a0
bsr Print
bra.s CloseLayers
CommoditiesOK
lea IFFParse.Name(pc),a1
moveq #37,d0
jsr _LVOOpenLibrary(a6)
move.l d0,IFFParse.Base
bne.s IFFParseOK
lea NoIFFParse.MSG(pc),a0
bsr Print
bra.s CloseCommodities
IFFParseOK
move.l d0,a6
jsr _LVOAllocIFF(a6)
move.l d0,SaveFile.IFF
bne.s IFFOK
lea NotEnoughMem.MSG(pc),a0
bsr.s Print
bra.s CloseIFFParse
IFFOK move.l d0,a0
jsr _LVOInitIFFasDOS(a6)
bsr SetCommodity
tst.l d0
beq.s CloseCommodities
bsr ProcessMessages
bsr RemCommodity
FreeIFF move.l SaveFile.IFF(pc),a0
move.l IFFParse.Base(pc),a6
jsr _LVOFreeIFF(a6)
CloseIFFParse
move.l IFFParse.Base(pc),a1
move.l 4.w,a6
jsr _LVOCloseLibrary(a6)
CloseCommodities
move.l Commodities.Base(pc),a1
move.l 4.w,a6
jsr _LVOCloseLibrary(a6)
CloseLayers
move.l Layers.Base(pc),a1
move.l 4.w,a6
jsr _LVOCloseLibrary(a6)
CloseGraphics
move.l Graphics.Base(pc),a1
move.l 4.w,a6
jsr _LVOCloseLibrary(a6)
CloseDOSResident
move.l DOS.Base(pc),a1
move.l 4.w,a6
jsr _LVOCloseLibrary(a6)
move.l Intuition.Base(pc),a1
move.l 4.w,a6
jsr _LVOCloseLibrary(a6)
moveq #0,d0
rts
Print movem.l d0-d1/a0-a3/a6,-(sp) ; Print(Message)(A0)
lea EasyPrint(pc),a1
move.l a0,es_TextFormat(a1)
suba.l a0,a0
move.l a0,a2
move.l a2,a3
move.l Intuition.Base(pc),a6
jsr _LVOEasyRequestArgs(a6)
movem.l (sp)+,d0-d1/a0-a3/a6
rts
SetCommodity ; (D0)Success=SetCommodity()
move.l 4.w,a6
jsr _LVOCreateMsgPort(a6)
lea Screen2IFF.NewBroker(pc),a0
move.l d0,nb_Port(a0)
bne.s .PortOK
lea NotEnoughMem.MSG(pc),a0
bsr Print
bra.s .Failure
.PortOK move.l CXPri(pc),d0
beq.s .NoPri
move.l d0,a1
move.b 3(a1),nb_Pri(a0)
.NoPri move.l #CXError,d0
move.l Commodities.Base(pc),a6
jsr _LVOCxBroker(a6)
move.l d0,CXBroker
bne.s .BrokerOK
move.l CXError(pc),d0
cmp.l #CBERR_SYSERR,d0
beq.s .NoMem
cmp.l #CBERR_DUP,d0
beq.s .Removed
lea UnknownCXError.MSG(pc),a0
bra.s .ErrorDone
.Removed
lea Removed.MSG(pc),a0
bra.s .ErrorDone
.NoMem lea NotEnoughMem.MSG(pc),a0
.ErrorDone
bsr Print
bra.s .Failure
.BrokerOK
lea SaveScreen.HKD(pc),a0
bsr.s CreateHotKey
move.l d0,SaveScreen.HK
beq.s .Failure
move.l CXBroker(pc),a0
moveq #-1,d0
move.l Commodities.Base(pc),a6
jsr _LVOActivateCxObj(a6)
moveq #-1,d0
rts
.Failure
move.l CXBroker(pc),a0
bsr DeleteObj
move.l CXPort(pc),d0
beq.s .NoPortToRemove
move.l d0,a0
move.l 4.w,a6
jsr _LVODeleteMsgPort(a6)
.NoPortToRemove
moveq #0,d0
rts
; hotkey description structure
rsreset
HKD_ID rs.l 1
HKD_Current rs.l 1 ; (pointer to pointer to string)
HKD_Default rs.l 1
HKD_SIZEOF rs.w 0
CreateHotKey ; (D0)(Filter)=CreateHotKey(Descr)(A0)
movem.l d2/a0-a3/a6,-(sp)
move.l a0,a2
moveq #CX_FILTER,d0
move.l HKD_Current(a2),a0
move.l (a0),d1
bne.s .DescOK
move.l HKD_Default(a2),d1
.DescOK move.l d1,a0
suba.l a1,a1
move.l Commodities.Base(pc),a6
jsr _LVOCreateCxObj(a6)
move.l d0,d2
beq.s .NoFilter
move.l d2,a0
jsr _LVOCxObjError(a6)
cmp.l #COERR_BADFILTER,d0
bne.s .DescrOK
lea BadHotKeyDescr.MSG(pc),a0
bsr Print
move.l HKD_Default(a2),a1
move.l d2,d0
jsr _LVOSetFilter(a6)
.DescrOK
moveq #CX_SEND,d0
move.l CXPort(pc),a0
move.l HKD_ID(a2),a1
jsr _LVOCreateCxObj(a6)
move.l d0,a1
move.l a1,d0
beq.s .NoSender
move.l d2,a0
jsr _LVOAttachCxObj(a6)
moveq #CX_TRANSLATE,d0
suba.l a0,a0
move.l a0,a1
jsr _LVOCreateCxObj(a6)
move.l d2,a0
move.l d0,a1
move.l a1,d0
beq.s .NoTranslate
jsr _LVOAttachCxObj(a6)
move.l d2,a1
move.l CXBroker(pc),a0
jsr _LVOAttachCxObj(a6)
move.l d2,d0
movem.l (sp)+,d2/a0-a3/a6
rts
.NoTranslate
.NoSender
move.l d2,a0
jsr _LVODeleteCxObjAll(a6)
.NoFilter
lea NotEnoughMem.MSG(pc),a0
bsr Print
movem.l (sp)+,d2-d3/a0-a3/a6
moveq #0,d0
move.l d0,d1
rts
DeleteObj ; DeleteObj(Object)(A0)
movem.l d0-d1/a0-a1/a6,-(sp)
move.l Commodities.Base(pc),a6
jsr _LVODeleteCxObjAll(a6)
movem.l (sp)+,d0-d1/a0-a1/a6
rts
RemCommodity
move.l CXBroker(pc),a0
bsr DeleteObj
move.l 4.w,a6
.MsgLoop
move.l CXPort(pc),a0
jsr _LVOGetMsg(a6)
move.l d0,a1
move.l a1,d0
beq.s .EndOfMsg
jsr _LVOReplyMsg(a6)
bra.s .MsgLoop
.EndOfMsg
move.l CXPort(pc),a0
jsr _LVODeleteMsgPort(a6)
rts
ProcessMessages
move.l CXPort(pc),a0
move.l 4.w,a6
jsr _LVOWaitPort(a6)
GetCXMessage
move.l CXPort(pc),a0
move.l 4.w,a6
jsr _LVOGetMsg(a6)
move.l d0,a2
move.l a2,d0
beq.s ProcessMessages
move.l a2,a0
move.l Commodities.Base(pc),a6
jsr _LVOCxMsgType(a6)
move.l d0,d2
move.l a2,a0
jsr _LVOCxMsgID(a6)
move.l d0,d3
move.l a2,a1
move.l 4.w,a6
jsr _LVOReplyMsg(a6)
cmp.l #CXM_COMMAND,d2
beq.s ProcessCommand
cmp.l #CXM_IEVENT,d2
beq.s ProcessEvent
lea UnknownCXMessage.MSG,a0
bsr Print
bra.s GetCXMessage
ProcessCommand
cmp.l #CXCMD_DISABLE,d3
beq.s .Disable
cmp.l #CXCMD_ENABLE,d3
beq.s .Enable
cmp.l #CXCMD_UNIQUE,d3
beq.s .Kill
cmp.l #CXCMD_KILL,d3
beq.s .Kill
lea UnknownCXMessage.MSG,a0
bsr Print
bra.s GetCXMessage
.Disable
moveq #0,d0
bra.s .ActBro
.Enable moveq #-1,d0
.ActBro move.l CXBroker(pc),a0
move.l Commodities.Base(pc),a6
jsr _LVOActivateCxObj(a6)
bra GetCXMessage
.Kill rts
ProcessEvent
cmp.l #IE_SAVESCREEN,d3
bne.s .NoSaveScreen
bsr.s SaveScreen
.NoSaveScreen
bra GetCXMessage
SaveScreen
move.l Intuition.Base(pc),a6
IFND DEBUG
moveq #0,d0
jsr _LVOLockIBase(a6)
move.l d0,d2
ENDC
move.l ib_FirstScreen(a6),a5
IFND DEBUG
move.l 4.w,a6
jsr _LVOForbid(a6)
move.l Intuition.Base(pc),a6
move.l d2,a0
jsr _LVOUnlockIBase(a6)
lea sc_LayerInfo(a5),a0
move.l Layers.Base(pc),a6
jsr _LVOLockLayerInfo(a6)
move.l 4.w,a6
jsr _LVOPermit(a6)
ENDC
; lets copy the bitplanes into fresh memory while screen is locked
DebugHere
move.l sc_RastPort+rp_BitMap(a5),a4
moveq #0,d0
move.l d0,d1
move.w bm_BytesPerRow(a4),d0
move.w bm_Rows(a4),d1
mulu d1,d0
move.l d0,d7 ; d7= Plane size
moveq #0,d6
move.b bm_Depth(a4),d6 ; d6= Depth
lsl.l d6,d0
move.l d0,Body.Size
move.l #MEMF_PUBLIC,d1
move.l 4.w,a6
jsr _LVOAllocVec(a6)
move.l d0,a3 ; a3= Copy of bitplanes (interleaved)
move.l a3,Bitplanes.Copy
bne.s .MemOK
bsr SurrenderLI
lea NotEnoughMem.MSG(pc),a0
bra Print
.MemOK
moveq #0,d7 ; line offset
move.l d7,d6
move.w bm_BytesPerRow(a4),d6 ; byte counter
move.w bm_Rows(a4),d5 ; line counter
subq.w #1,d5
.NextLine
moveq #0,d4 ; plane counter
move.b bm_Depth(a4),d4
subq.w #1,d4
lea bm_Planes(a4),a0 ; plane pointer pointer
.NextPlane
move.l (a0)+,a1 ; plane pointer
add.l d7,a1 ; point right line
move.l d6,d3 ; number of bytes to transfer
subq.l #1,d3
.CopyLoop
move.b (a1)+,(a3)+
dbra d3,.CopyLoop
dbra d4,.NextPlane
add.l d6,d7
dbra d5,.NextLine
moveq #0,d0
move.w bm_BytesPerRow(a4),d0
lsl.l #3,d0
move.w d0,BMHD.Wid
move.w d0,BMHD.pageWidth
moveq #0,d1
move.w bm_Rows(a4),BMHD.H
move.w bm_Rows(a4),BMHD.pageHeight
move.b bm_Depth(a4),BMHD.nPlanes
moveq #1,d3
moveq #0,d1
move.b bm_Depth(a4),d1
lsl.l d1,d3
move.l d3,NColors
move.l d3,d0
mulu #3,d0
move.l #MEMF_CLEAR,d1
move.l 4.w,a6
jsr _LVOAllocVec(a6)
move.l d0,CMap
bne.s .CMAPAllocated
bsr SurrenderLI
lea NotEnoughMem.MSG(pc),a0
bsr Print
bra .FreeBODY
.CMAPAllocated
move.l d0,a2
move.l sc_ViewPort+vp_ColorMap(a5),a3
move.l Graphics.Base(pc),a6
subq.l #1,d3
.FillCMap
move.l NColors(pc),d0
sub.l d3,d0
subq.l #1,d0
move.l a3,a0
jsr _LVOGetRGB4(a6)
move.l d0,d1
and.l #%0000111100000000,d0
lsr.l #4,d0
move.b d0,(a2)+
move.l d1,d0
and.l #%0000000011110000,d0
move.b d0,(a2)+
move.l d1,d0
and.l #%0000000000001111,d0
lsl.l #4,d0
move.b d0,(a2)+
dbra d3,.FillCMap
move.w sc_ViewPort+vp_Modes(a5),d0
and.l #(~(V_SPRITES|GENLOCK_VIDEO))&$FFFF,d0
move.l d0,CAMG
bsr SurrenderLI
.TryThisFile
move.l BaseName(pc),d1
move.l #MODE_OLDFILE,d2
move.l DOS.Base(pc),a6
jsr _LVOOpen(a6)
move.l d0,d1
beq.s .ThisFile
jsr _LVOClose(a6)
move.l BaseName(pc),a0
bsr StrLen
move.b -1(a0,d0),d1
addq.b #1,d1
cmp.b #'Z',d1
ble.s .NotZ
move.b #'A',d1
.NotZ move.b d1,-1(a0,d0)
bra.s .TryThisFile
.ThisFile
move.l BaseName(pc),d1
move.l #MODE_NEWFILE,d2
jsr _LVOOpen(a6)
move.l d0,SaveFile.Handle
bne.s .SaveFileOpened
lea CantOpenSaveFile.MSG(pc),a0
bsr Print
bra .FreeCMAP
.SaveFileOpened
move.l SaveFile.IFF(pc),a0
move.l d0,iff_Stream(a0)
move.l #IFFF_WRITE,d0
move.l IFFParse.Base(pc),a6
jsr _LVOOpenIFF(a6)
tst.l d0
beq.s .IFFOpened
lea CantOpenSaveFile.MSG(pc),a0
bsr Print
bra .CloseFile
.IFFOpened
move.l SaveFile.IFF(pc),a0
move.l #'ILBM',d0
move.l #'FORM',d1
move.l #IFFSIZE_UNKNOWN,d2
jsr _LVOPushChunk(a6)
tst.l d0
beq.s .FORMPushed
.IFFError
lea ErrorWriting.MSG(pc),a0
bsr Print
bra .CloseIFF
.FORMPushed
move.l SaveFile.IFF(pc),a0 ; let's create BMHD
move.l #'BMHD',d1
move.l #BMHD.SIZEOF,d2
jsr _LVOPushChunk(a6)
tst.l d0
bne.s .IFFError
lea BMHD.Buffer(pc),a1
move.l SaveFile.IFF(pc),a0
move.l d2,d0
jsr _LVOWriteChunkBytes(a6)
cmp.l d0,d2
bne.s .IFFError
move.l SaveFile.IFF(pc),a0
jsr _LVOPopChunk(a6)
tst.l d0
bne.s .IFFError
move.l SaveFile.IFF(pc),a0 ; go CAMG
move.l #'CAMG',d1
move.l #4,d2
jsr _LVOPushChunk(a6)
tst.l d0
bne.s .IFFError
lea CAMG(pc),a1
move.l SaveFile.IFF(pc),a0
move.l d2,d0
jsr _LVOWriteChunkBytes(a6)
cmp.l d0,d2
bne.s .IFFError
move.l SaveFile.IFF(pc),a0
jsr _LVOPopChunk(a6)
tst.l d0
bne.s .IFFError
move.l SaveFile.IFF(pc),a0 ; we're going to write the CMAP
move.l #'CMAP',d1
move.l NColors(pc),d2
mulu #3,d2
jsr _LVOPushChunk(a6)
tst.l d0
bne .IFFError
move.l SaveFile.IFF(pc),a0
move.l CMap(pc),a1
move.l d2,d0
jsr _LVOWriteChunkBytes(a6)
cmp.l d0,d2
bne .IFFError
move.l SaveFile.IFF(pc),a0
jsr _LVOPopChunk(a6)
tst.l d0
bne .IFFError
move.l SaveFile.IFF(pc),a0 ; the big one: BODY
move.l #'BODY',d1
move.l Body.Size(pc),d2
jsr _LVOPushChunk(a6)
tst.l d0
bne .IFFError
move.l SaveFile.IFF(pc),a0
move.l Bitplanes.Copy(pc),a1
move.l d2,d0
jsr _LVOWriteChunkBytes(a6)
cmp.l d2,d0
bne .IFFError
move.l SaveFile.IFF(pc),a0
jsr _LVOPopChunk(a6)
tst.l d0
bne .IFFError
move.l SaveFile.IFF(pc),a0
jsr _LVOPopChunk(a6)
tst.l d0
bne .IFFError
.CloseIFF
move.l SaveFile.IFF(pc),a0
move.l IFFParse.Base(pc),a6
jsr _LVOCloseIFF(a6)
.CloseFile
move.l SaveFile.Handle(pc),d1
move.l DOS.Base(pc),a6
jsr _LVOClose(a6)
.FreeCMAP
move.l CMap(pc),a1
move.l 4.w,a6
jsr _LVOFreeVec(a6)
.FreeBODY
move.l Bitplanes.Copy(pc),a1
move.l 4.w,a6
jsr _LVOFreeVec(a6)
rts
SurrenderLI
IFND DEBUG
movem.l d0-d1/a0-a1/a6,-(sp)
lea sc_LayerInfo(a5),a0
move.l Layers.Base(pc),a6
jsr _LVOUnlockLayerInfo(a6)
movem.l (sp)+,d0-d1/a0-a1/a6
ENDC
rts
StrLen ; (D0,Z)Len=StrLen(String)(A0)
move.l a0,-(sp)
move.l a0,d0
.Loop tst.b (a0)+
bne.s .Loop
sub.l d0,a0
move.l a0,d0
move.l (sp)+,a0
subq.l #1,d0
rts
EasyPrint dc.l es_SIZEOF
dc.l 0
dc.l EasyPrint.Title
dc.l 0
dc.l EasyPrint.Gad
Screen2IFF.NewBroker
dc.b NB_VERSION,0
dc.l Screen2IFF.Name
dc.l Screen2IFF.Title
dc.l Screen2IFF.Descr
dc.w NBU_UNIQUE!NBU_NOTIFY
dc.w 0
dc.b 10,0
CXPort dc.l 0
dc.w 0
CXBroker dc.l 0
CXError dc.l 0
SaveScreen.HKD dc.l IE_SAVESCREEN,SaveScreen.Descr,SaveScreen.Def
Args.Array
SaveScreen.Descr
dc.l 0
BaseName
dc.l DefaultFile.Name
CXPri dc.l 0
SaveScreen.HK dc.l 0
BMHD.Buffer
BMHD.Wid dc.w 0
BMHD.H dc.w 0
dc.w 0,0
BMHD.nPlanes dc.b 0,0
BMHD.Compression dc.b 0,0 ; not compressed (yet?)
dc.w 0,$0101
BMHD.pageWidth dc.w 0
BMHD.pageHeight dc.w 0
BMHD.SIZEOF=*-BMHD.Buffer
NColors dc.l 0
CMap dc.l 0
CAMG dc.l 0
Bitplanes.Copy dc.l 0
Body.Size dc.l 0
Args.RDArgs dc.l 0
Program.DiskObject dc.l 0
SaveFile.Handle dc.l 0
SaveFile.IFF dc.l 0
Intuition.Base dc.l 0
DOS.Base dc.l 0
Icon.Base dc.l 0
Graphics.Base dc.l 0
Layers.Base dc.l 0
Commodities.Base dc.l 0
IFFParse.Base dc.l 0
Graphics.Name dc.b 'graphics.library',0
Layers.Name dc.b 'layers.library',0
Commodities.Name dc.b 'commodities.library',0
IFFParse.Name dc.b 'iffparse.library',0
Icon.Name dc.b 'icon.library',0
Screen2IFF.Name dc.b 'Screen2IFF',0
DefaultFile.Name dc.b 'ScreenA',0
NoCommodities.MSG dc.b 'Unable to open commodities.library V37+ !',0
NoIFFParse.MSG dc.b 'Unable to open iffparse.library V37+ !',0
NotEnoughMem.MSG dc.b 'Not enough memory !',0
UnknownCXError.MSG dc.b 'Commodities reports an unknown error !',0
Removed.MSG dc.b 'Removed Screen2IFF',0
BadHotKeyDescr.MSG dc.b 'Bad hotkey description string.',10
dc.b 'Default used.',0
UnknownCXMessage.MSG dc.b 'Unknown Commodities message received !',10
dc.b '(This is VERY strange !)',0
CantOpenSaveFile.MSG dc.b 'Cannot open save file !',0
ErrorWriting.MSG dc.b 'Error writing output file !',0
EasyPrint.Title dc.b 'Message from Screen2IFF:',0
EasyPrint.Gad dc.b 'Aha.',0
Screen2IFF.Title dc.b 'Screen2IFF '
REVISION
dc.b ' © 1994 F.Delacroix',0
Screen2IFF.Descr dc.b 'Saves screen when hotkey pressed.',0
SaveScreen.Def dc.b 'lcommand rcommand f10',0
BadKickstart.ALT dc.b 0,176,14
dc.b 'You need kickstart V37.175 (2.04) !',0,0
BadKickstart.HGT EQU 24